今天是第六天我們可以寫一個javascript智慧停車場網頁程式管理系統,現在停車是大家生活中需要面對的問題,有時候透過智慧停車場系統能更好的更快速的找到車位,以下是我的程式碼
<!DOCTYPE html>
<html lang="zh-Hant">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>智慧停車場管理系統</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <h1>智慧停車場管理系統</h1>
    <div class="parking-lot-info">
        <p>總車位數量: <span id="total-spaces">50</span></p>
        <p>剩餘車位: <span id="available-spaces">50</span></p>
    </div>
    <div class="controls">
        <button id="enter-button">車輛進入</button>
        <button id="exit-button">車輛離開</button>
    </div>
    <div class="log">
        <h3>車輛進出紀錄</h3>
        <ul id="log-list"></ul>
    </div>
    <script src="script.js"></script>
</body>
</html>
body {
    font-family: Arial, sans-serif;
    background-color: #f4f4f4;
    margin: 0;
    padding: 0;
    text-align: center;
}
h1 {
    background-color: #333;
    color: #fff;
    padding: 10px 0;
    margin: 0;
}
.parking-lot-info {
    margin: 20px 0;
}
.controls {
    margin: 20px 0;
}
button {
    padding: 10px 20px;
    font-size: 16px;
    margin: 10px;
    cursor: pointer;
    border: none;
    background-color: #28a745;
    color: white;
}
button#exit-button {
    background-color: #dc3545;
}
button:disabled {
    background-color: #ccc;
}
.log {
    margin-top: 20px;
    max-width: 400px;
    margin-left: auto;
    margin-right: auto;
}
#log-list {
    list-style: none;
    padding: 0;
}
#log-list li {
    padding: 5px;
    background-color: #e9e9e9;
    margin: 5px 0;
}
document.addEventListener("DOMContentLoaded", function() {
    let totalSpaces = 50;
    let availableSpaces = 50;
    const totalSpacesElement = document.getElementById("total-spaces");
    const availableSpacesElement = document.getElementById("available-spaces");
    const logList = document.getElementById("log-list");
    const enterButton = document.getElementById("enter-button");
    const exitButton = document.getElementById("exit-button");
    // 更新剩餘車位數量
    function updateAvailableSpaces() {
        availableSpacesElement.textContent = availableSpaces;
        checkButtonStates();
    }
    // 檢查按鈕狀態
    function checkButtonStates() {
        if (availableSpaces === 0) {
            enterButton.disabled = true;
        } else {
            enterButton.disabled = false;
        }
        if (availableSpaces === totalSpaces) {
            exitButton.disabled = true;
        } else {
            exitButton.disabled = false;
        }
    }
    // 車輛進入
    enterButton.addEventListener("click", function() {
        if (availableSpaces > 0) {
            availableSpaces--;
            logAction("車輛進入");
            updateAvailableSpaces();
        }
    });
    // 車輛離開
    exitButton.addEventListener("click", function() {
        if (availableSpaces < totalSpaces) {
            availableSpaces++;
            logAction("車輛離開");
            updateAvailableSpaces();
        }
    });
    // 記錄車輛進出
    function logAction(action) {
        const listItem = document.createElement("li");
        const timestamp = new Date().toLocaleTimeString();
        listItem.textContent = `${action} - 時間: ${timestamp}`;
        logList.appendChild(listItem);
    }
    // 初始化
    updateAvailableSpaces();
});
DOMContentLoaded 事件document.addEventListener("DOMContentLoaded", function() {
    // 這裡的代碼在網頁完全加載後會被執行
});
DOMContentLoaded 是一個事件,當 HTML 文件完全加載並解析完成時(不必等圖像和其他資源),會觸發此事件。我們將主程式碼包裹在這個事件中,以確保當我們嘗試操作 DOM 元素時,它們已經載入完畢。let totalSpaces = 50; // 總車位數量
let availableSpaces = 50; // 剩餘車位數量
const totalSpacesElement = document.getElementById("total-spaces");
const availableSpacesElement = document.getElementById("available-spaces");
const logList = document.getElementById("log-list");
const enterButton = document.getElementById("enter-button");
const exitButton = document.getElementById("exit-button");
getElementById 取得 HTML 中對應的元素,這些元素將用來顯示或觸發與停車場管理相關的行為。
totalSpacesElement:顯示總車位數。availableSpacesElement:顯示當前剩餘車位數。logList:車輛進出紀錄的 <ul> 列表。enterButton 和 exitButton:車輛進入和離開的按鈕。function updateAvailableSpaces() {
    availableSpacesElement.textContent = availableSpaces; // 更新剩餘車位的顯示
    checkButtonStates(); // 檢查按鈕狀態
}
checkButtonStates 來確保按鈕根據剩餘車位狀況正確啟用或禁用。function checkButtonStates() {
    if (availableSpaces === 0) {
        enterButton.disabled = true; // 當剩餘車位為 0 時,禁用「車輛進入」按鈕
    } else {
        enterButton.disabled = false; // 否則啟用「車輛進入」按鈕
    }
    if (availableSpaces === totalSpaces) {
        exitButton.disabled = true; // 當所有車位都是空的時,禁用「車輛離開」按鈕
    } else {
        exitButton.disabled = false; // 否則啟用「車輛離開」按鈕
    }
}
enterButton.addEventListener("click", function() {
    if (availableSpaces > 0) {
        availableSpaces--; // 減少剩餘車位
        logAction("車輛進入"); // 記錄車輛進入
        updateAvailableSpaces(); // 更新顯示的車位數量
    }
});
logAction 函數來記錄此動作。exitButton.addEventListener("click", function() {
    if (availableSpaces < totalSpaces) {
        availableSpaces++; // 增加剩餘車位
        logAction("車輛離開"); // 記錄車輛離開
        updateAvailableSpaces(); // 更新顯示的車位數量
    }
});
logAction 函數來記錄此動作。function logAction(action) {
    const listItem = document.createElement("li"); // 建立一個新的列表項目
    const timestamp = new Date().toLocaleTimeString(); // 取得當前時間
    listItem.textContent = `${action} - 時間: ${timestamp}`; // 設定列表項目的內容
    logList.appendChild(listItem); // 將項目添加到紀錄列表中
}
document.createElement 創建一個新的 <li> 列表項目。new Date().toLocaleTimeString() 來取得當前時間,並將動作(車輛進入或車輛離開)和時間合併成一個字串。logList 裡,更新網頁上的紀錄列表。updateAvailableSpaces();
updateAvailableSpaces,來顯示初始的剩餘車位數並檢查按鈕狀態。這段程式主要是使用 JavaScript 來實現一個動態管理停車場車位狀況的小系統,通過更新剩餘車位、進出車輛紀錄等來模擬停車場的基本運作。